﻿using System;
using System.Collections.Generic;

namespace SharpSqlAnalyzer.nodes.mssql
{
	// Token: 0x020003C7 RID: 967
	public class TQueryHint : TParseTreeNode
	{
		// Token: 0x170008A9 RID: 2217
		// (get) Token: 0x06002708 RID: 9992 RVA: 0x0033B179 File Offset: 0x00339379
		// (set) Token: 0x06002709 RID: 9993 RVA: 0x0033B181 File Offset: 0x00339381
		public virtual List<TTableHint> TableHints
		{
			get
			{
				return this.tableHints;
			}
			set
			{
				this.tableHints = value;
			}
		}

		// Token: 0x170008AA RID: 2218
		// (get) Token: 0x0600270A RID: 9994 RVA: 0x0033B18A File Offset: 0x0033938A
		// (set) Token: 0x0600270B RID: 9995 RVA: 0x0033B192 File Offset: 0x00339392
		public virtual TObjectName Exposed_object_name
		{
			get
			{
				return this.exposed_object_name;
			}
			set
			{
				this.exposed_object_name = value;
			}
		}

		// Token: 0x170008AB RID: 2219
		// (get) Token: 0x0600270C RID: 9996 RVA: 0x0033B19B File Offset: 0x0033939B
		// (set) Token: 0x0600270D RID: 9997 RVA: 0x0033B1A3 File Offset: 0x003393A3
		public virtual TConstant Maxrecursion_number
		{
			get
			{
				return this.maxrecursion_number;
			}
			set
			{
				this.maxrecursion_number = value;
			}
		}

		// Token: 0x170008AC RID: 2220
		// (get) Token: 0x0600270E RID: 9998 RVA: 0x0033B1AC File Offset: 0x003393AC
		// (set) Token: 0x0600270F RID: 9999 RVA: 0x0033B1B4 File Offset: 0x003393B4
		public virtual TConstant Number_of_processors
		{
			get
			{
				return this.number_of_processors;
			}
			set
			{
				this.number_of_processors = value;
			}
		}

		// Token: 0x170008AD RID: 2221
		// (get) Token: 0x06002710 RID: 10000 RVA: 0x0033B1BD File Offset: 0x003393BD
		// (set) Token: 0x06002711 RID: 10001 RVA: 0x0033B1C5 File Offset: 0x003393C5
		public virtual EQueryHint QueryHintType
		{
			get
			{
				return this.queryHintType;
			}
			set
			{
				this.queryHintType = value;
			}
		}

		// Token: 0x06002712 RID: 10002 RVA: 0x0033B1CE File Offset: 0x003393CE
		public override void init(object arg1)
		{
			this.queryHintType = (EQueryHint)arg1;
		}

		// Token: 0x170008AE RID: 2222
		// (get) Token: 0x06002713 RID: 10003 RVA: 0x0033B1DC File Offset: 0x003393DC
		// (set) Token: 0x06002714 RID: 10004 RVA: 0x0033B1E4 File Offset: 0x003393E4
		public virtual TConstant Number_rows
		{
			get
			{
				return this.number_rows;
			}
			set
			{
				this.number_rows = value;
			}
		}

		// Token: 0x06002715 RID: 10005 RVA: 0x0033B1F0 File Offset: 0x003393F0
		public override void init(object arg1, object arg2)
		{
			this.init(arg1);
			EQueryHint equeryHint = this.queryHintType;
			if (equeryHint <= EQueryHint.E_QUERY_HINT_MAXDOP)
			{
				if (equeryHint == EQueryHint.E_QUERY_HINT_FAST)
				{
					this.number_rows = (TConstant)arg2;
					return;
				}
				if (equeryHint != EQueryHint.E_QUERY_HINT_MAXDOP)
				{
					return;
				}
				this.number_of_processors = (TConstant)arg2;
				return;
			}
			else
			{
				if (equeryHint == EQueryHint.E_QUERY_HINT_MAXRECURSION)
				{
					this.maxrecursion_number = (TConstant)arg2;
					return;
				}
				if (equeryHint != EQueryHint.E_QUERY_HINT_TABLE_HINT)
				{
					return;
				}
				this.exposed_object_name = (TObjectName)arg2;
				return;
			}
		}

		// Token: 0x06002716 RID: 10006 RVA: 0x0033B259 File Offset: 0x00339459
		public override void init(object arg1, object arg2, object arg3)
		{
			this.init(arg1, arg2);
			this.tableHints = (List<TTableHint>)arg3;
		}

		// Token: 0x06002717 RID: 10007 RVA: 0x0033B26F File Offset: 0x0033946F
		public override void accept(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x06002718 RID: 10008 RVA: 0x0033B27F File Offset: 0x0033947F
		public override void acceptChildren(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x04001D7E RID: 7550
		private EQueryHint queryHintType;

		// Token: 0x04001D7F RID: 7551
		private TConstant number_rows;

		// Token: 0x04001D80 RID: 7552
		private TConstant number_of_processors;

		// Token: 0x04001D81 RID: 7553
		private TConstant maxrecursion_number;

		// Token: 0x04001D82 RID: 7554
		private TObjectName exposed_object_name;

		// Token: 0x04001D83 RID: 7555
		private List<TTableHint> tableHints;
	}
}
